{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Ridge Regression\n",
    "\n",
    "#### Author: Yiran Jing\n",
    "\n",
    "#### Date: Feb 2020\n",
    "\n",
    "\n",
    "## Contents:\n",
    "1. Model selection\n",
    "   - Linear regression\n",
    "   - Ridge regression\n",
    "   - Lasso regression\n",
    "   \n",
    "Lasso performs best using `Days`, `suspected`, `confirmed_lag1` as regressors\n",
    "\n",
    "2. Ridge Residual Dignostic\n",
    "\n",
    "3. Model prediction\n",
    "\n",
    "## Summary"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import operator\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import pandas\n",
    "import datetime\n",
    "import seaborn as sns\n",
    "import matplotlib.dates as mdates\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.metrics import mean_absolute_error\n",
    "# Import models from scikit learn module\n",
    "from sklearn.linear_model import Ridge, RidgeCV, ElasticNet, LassoCV, LassoLarsCV, LinearRegression, ElasticNetCV\n",
    "from helper_fun_model import *\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2020-02-20 21:35:01Update records successfully to ../data/DXY_Chinese.csv\n",
      "Save area daily dataset (English) into ../data/DXYArea.csv\n",
      "CPU times: user 186 ms, sys: 62.8 ms, total: 249 ms\n",
      "Wall time: 15.7 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "## Update data from DXY\n",
    "! cd ../data_processing && python DXY_AreaData_query.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Load data \n",
    "df = pd.read_csv(\"../data/DXYArea.csv\")\n",
    "\"\"\"\n",
    "Data Cleaning \n",
    "\"\"\"\n",
    "df['date'] = pd.to_datetime(df['date'])\n",
    "df = df[df['date'] != df['date'].max()] # remove todays' records (since it can be incompleted)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = df[df['date']>'2020-01-14']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Case 1: Overall China"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "china_df = get_China_total(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "#features_to_engineer = ['confirmed', 'suspected']\n",
    "features_to_engineer = ['confirmed'] # only calculate lag 1 for predictor, not regressor."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "china_df = feature_engineering(china_df, features_to_engineer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>country</th>\n",
       "      <th>countryCode</th>\n",
       "      <th>province</th>\n",
       "      <th>city</th>\n",
       "      <th>confirmed</th>\n",
       "      <th>suspected</th>\n",
       "      <th>cured</th>\n",
       "      <th>dead</th>\n",
       "      <th>Days</th>\n",
       "      <th>net_confirmed</th>\n",
       "      <th>confirmed_lag1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>8544</th>\n",
       "      <td>2020-02-19</td>\n",
       "      <td>中国</td>\n",
       "      <td>CN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>74675</td>\n",
       "      <td>4922</td>\n",
       "      <td>16168</td>\n",
       "      <td>2121</td>\n",
       "      <td>73</td>\n",
       "      <td>56386</td>\n",
       "      <td>74276.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8890</th>\n",
       "      <td>2020-02-20</td>\n",
       "      <td>中国</td>\n",
       "      <td>CN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>74679</td>\n",
       "      <td>4922</td>\n",
       "      <td>16562</td>\n",
       "      <td>2122</td>\n",
       "      <td>74</td>\n",
       "      <td>55995</td>\n",
       "      <td>74675.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           date country countryCode province city  confirmed  suspected  \\\n",
       "8544 2020-02-19      中国          CN      NaN  NaN      74675       4922   \n",
       "8890 2020-02-20      中国          CN      NaN  NaN      74679       4922   \n",
       "\n",
       "      cured  dead  Days  net_confirmed  confirmed_lag1  \n",
       "8544  16168  2121    73          56386         74276.0  \n",
       "8890  16562  2122    74          55995         74675.0  "
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "china_df.tail(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train dataset: data before 2020-02-15 00:00:00 \n",
      "Test dataset: the last 5 days\n"
     ]
    }
   ],
   "source": [
    "Train, Test = split_train_test_by_date(china_df, 5) \n",
    "\n",
    "regressors = ['Days', 'suspected'] # other variables we want to apply into model\n",
    "#regressors = ['Days']\n",
    "\n",
    "\n",
    "X_train = Train.loc[:,regressors + [x+'_lag1' for x in features_to_engineer]]\n",
    "y_train = Train['confirmed']\n",
    "X_test =  Test.loc[:,regressors + [x+'_lag1' for x in features_to_engineer]]\n",
    "y_test = Test['confirmed']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Days', 'suspected', 'confirmed_lag1'], dtype='object')"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.columns # regressor within model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Use StandardScaler to transform numerical data \n",
    "# Note: truning sc based on X_train\n",
    "sc = StandardScaler().fit(X_train)\n",
    "X_train_sc = sc.transform(X_train)\n",
    "#X_validate_numerical_sc = sc.transform(X_validate_numerical)\n",
    "X_test_sc = sc.transform(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1.67705098, -1.1657803 , -0.86928584],\n",
       "       [-1.56524758, -1.1657803 , -0.867103  ],\n",
       "       [-1.45344419, -1.1657803 , -0.86689004]])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_sc[:3]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Linear regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Linear Regression MAPE on Validation set : 0.06939529458985437\n",
      "Linear Regression MAE on Validation set : 5063.466757471452\n",
      "Linear Regression R2 on Validation set : -4.1977356110329564\n"
     ]
    }
   ],
   "source": [
    "# Fit the linear regression\n",
    "linear = LinearRegression()\n",
    "linear.fit(X_train_sc, y_train)\n",
    "\n",
    "# # Find the validation score\n",
    "get_validation_score(linear, X_test_sc, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## LASSO"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "basic alpha : 101.63028985014307\n"
     ]
    }
   ],
   "source": [
    "# Find from default hyperparameters \n",
    "lasso = LassoCV(cv=10)\n",
    "lasso.fit(X_train_sc, y_train)\n",
    "alpha = lasso.alpha_\n",
    "print(\"basic alpha :\", alpha)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Try again for more precision with alphas centered around 101.63028985014307\n",
      "Best alpha : 60.97817391008584\n"
     ]
    }
   ],
   "source": [
    "# Find from more refined list\n",
    "print(\"Try again for more precision with alphas centered around \" + str(alpha))\n",
    "lasso = LassoCV(alphas = [alpha * .6, alpha * .65, alpha * .7, alpha * .75, alpha * .8, \n",
    "                          alpha * .85, alpha * .9, alpha * .95, alpha, alpha * 1.05, \n",
    "                          alpha * 1.1, alpha * 1.15, alpha * 1.25, alpha * 1.3, alpha * 1.35, \n",
    "                          alpha * 1.4], \n",
    "                max_iter = 50000, cv = 5)\n",
    "lasso.fit(X_train_sc, y_train)\n",
    "alpha = lasso.alpha_\n",
    "print(\"Best alpha :\", alpha)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Linear Regression MAPE on Validation set : 0.060886732860715824\n",
      "Linear Regression MAE on Validation set : 4443.161894009257\n",
      "Linear Regression R2 on Validation set : -3.0225991969314325\n"
     ]
    }
   ],
   "source": [
    "# # Find the validation score\n",
    "get_validation_score(lasso, X_test_sc, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Ridge"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "basic alpha : 10.0\n"
     ]
    }
   ],
   "source": [
    "# Find from default hyperparameters \n",
    "ridge = RidgeCV(cv=5)\n",
    "ridge.fit(X_train_sc, y_train)\n",
    "alpha = ridge.alpha_\n",
    "print(\"basic alpha :\", alpha)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Try again for more precision with alphas centered around 10.0\n",
      "Best alpha : 14.0\n"
     ]
    }
   ],
   "source": [
    "# Find from more refined list\n",
    "print(\"Try again for more precision with alphas centered around \" + str(alpha))\n",
    "ridge = RidgeCV(alphas = [alpha * .6, alpha * .65, alpha * .7, alpha * .75, alpha * .8, \n",
    "                          alpha * .85, alpha * .9, alpha * .95, alpha, alpha * 1.05, \n",
    "                          alpha * 1.1, alpha * 1.15, alpha * 1.25, alpha * 1.3, alpha * 1.35, \n",
    "                          alpha * 1.4], cv = 5)\n",
    "ridge.fit(X_train_sc, y_train)\n",
    "alpha = ridge.alpha_\n",
    "print(\"Best alpha :\", alpha)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Linear Regression MAPE on Validation set : 0.18347205151634374\n",
      "Linear Regression MAE on Validation set : 13292.800038148938\n",
      "Linear Regression R2 on Validation set : -32.84577130780329\n"
     ]
    }
   ],
   "source": [
    "# # Find the validation score\n",
    "get_validation_score(ridge, X_test_sc, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Save prediction result to CSV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_index = X_train.index\n",
    "test_index = X_test.index\n",
    "\n",
    "# Create dataframe\n",
    "X_train = pd.DataFrame(X_train_sc, columns=X_train.columns, index=train_index)\n",
    "#X_validate_numerical_sc = pd.DataFrame(X_validate_numerical_sc, columns=numerical, index=validate_index)\n",
    "X_test = pd.DataFrame(X_test_sc, columns=X_train.columns, index=test_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Calculate the predictions \n",
    "predictions_ridge = np.squeeze(ridge.predict(X_test))\n",
    "\n",
    "# Calculate the residuals\n",
    "residuals_ridge = np.squeeze(y_test) - predictions_ridge\n",
    "\n",
    "# Create dataframe\n",
    "d = {'y_test': np.squeeze(y_test), 'predictions': predictions_ridge, 'residuals_ridge': residuals_ridge}\n",
    "df_residuals_ridge = pd.DataFrame(data=d, index=test_index)\n",
    "\n",
    "# Left join the period\n",
    "df_residuals_ridge['date'] = Test['date']\n",
    "\n",
    "df_residuals_ridge.shape\n",
    "\n",
    "# Write to a csv file\n",
    "df_residuals_ridge.to_csv('prediction/residuals_ridge_test_0216.csv', index_label='test_index')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Calculate the predictions \n",
    "predictions_ridge = np.squeeze(ridge.predict(X_train))\n",
    "\n",
    "# Calculate the residuals\n",
    "residuals_ridge = np.squeeze(y_train) - predictions_ridge\n",
    "\n",
    "# Create dataframe\n",
    "d = {'y_train': np.squeeze(y_train), 'predictions': predictions_ridge, 'residuals_ridge': residuals_ridge}\n",
    "df_residuals_ridge = pd.DataFrame(data=d, index=train_index)\n",
    "\n",
    "# Left join the period\n",
    "df_residuals_ridge['date'] = Train['date']\n",
    "\n",
    "# Write to a csv file\n",
    "df_residuals_ridge.to_csv('prediction/residuals_ridge_train_0216.csv', index_label='train_index')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y_train</th>\n",
       "      <th>predictions</th>\n",
       "      <th>residuals_ridge</th>\n",
       "      <th>date</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>135</th>\n",
       "      <td>41</td>\n",
       "      <td>-1953.268874</td>\n",
       "      <td>1994.268874</td>\n",
       "      <td>2020-01-15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>138</th>\n",
       "      <td>45</td>\n",
       "      <td>-1202.787100</td>\n",
       "      <td>1247.787100</td>\n",
       "      <td>2020-01-16</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     y_train  predictions  residuals_ridge       date\n",
       "135       41 -1953.268874      1994.268874 2020-01-15\n",
       "138       45 -1202.787100      1247.787100 2020-01-16"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_residuals_ridge.head(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Ridge Residual Dignostic\n",
    "\n",
    "Since ridge is the optimal model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<seaborn.axisgrid.JointGrid at 0x11d25ffd0>"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.jointplot(\"y_train\", \"residuals_ridge\", data=df_residuals_ridge, kind=\"reg\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Ridge model prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "ridge_res_train = pd.read_csv('prediction/residuals_ridge_train_0216.csv')\n",
    "del ridge_res_train['train_index']\n",
    "ridge_res_test = pd.read_csv('prediction/residuals_ridge_test_0216.csv')\n",
    "del ridge_res_test['test_index']\n",
    "\n",
    "ridge_res_test.Timestamp = pd.to_datetime(ridge_res_test.date,format='%Y-%m-%d %H:%M') \n",
    "ridge_res_test.index = ridge_res_test.Timestamp\n",
    "ridge_res_test = ridge_res_test.sort_index()\n",
    "\n",
    "ridge_res_train.Timestamp = pd.to_datetime(ridge_res_train.date,format='%Y-%m-%d %H:%M') \n",
    "ridge_res_train.index = ridge_res_train.Timestamp\n",
    "ridge_res_train = ridge_res_train.sort_index()\n",
    "\n",
    "ridge_all = pd.concat([ridge_res_train,ridge_res_test])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.18347205151634374\n"
     ]
    }
   ],
   "source": [
    "## MAPE of test case (14 Feb - 20 Feb)\n",
    "y = ridge_res_test['y_test'][:7]\n",
    "y_pred = ridge_res_test['predictions'][:7]\n",
    "mape = np.abs((y-y_pred))/np.abs(y)\n",
    "print(np.mean(mape))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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YmIiiYmJ9O7dG4CsrCzq1KmTW87gwYOP+z516lQuv/xypkyZwt133w1AYmIi48aNY9++faSlpdGnT58CY1uzZg2NGzemefPmAAwbNoxJkyYxZsyY3HgBYmJi+OSTT067DkRERERERCR/Su7zcCaJ+Olo3bp1bhf3HAcOHGDz5s2EhoZiZsctMzOaN2/O0qVL+fTTTxk3bhy9evViwIABtGnThoULF+a5nwoVjg3C0a9fPx555BH27NlDfHw8V1xxBQDDhw9nxowZREVF8dZbbzF37twzOrZy5coB3qMGp/Osv4iIiIiIiJycuuWXAL169eLQoUO88847gNfi/sADDzB8+HAiIiL46quv2LNnD4cPH2bGjBl069aN7du3ExERwdChQxk7dixLly6lRYsWJCcn5yb3GRkZrFixIs99VqxYkU6dOjF69Gji4uIICQkBIDU1lTp16pCRkcH777+fu36lSpVITU39VTktWrRg48aNrF+/HoB3332XHj16FGn9iIiIiIiUFFnZ2Sxau5MlScnBDkXkOEruSwAzY/r06Xz00Uc0a9aM5s2bEx4ezp///GcAOnfuzA033ED79u254YYbiI2N5aeffqJz585ER0czYcIExo0bR9myZZk2bRoPPvggUVFRREdHs2DBgnz3O3jwYN57773juutPnDiRLl260K1bN1q2bJk7f8iQITzzzDN06NCBpKSk3Pnh4eG8+eabDBo0iHbt2lGmTBnuuuuuYqglEREREZHg2b7nIG9+vZrfvPA1k+etJyMzO9ghiRzHnHPBjuGsio2NdUuWLDlu3qpVq2jVqlWQIpKzTedbRERERArjSEYW81f/wucJW9i4K5Ur2tWjb3QDImtXCnZocp4ys3jnXGxey/TMvYiIiIiISID1O/bzecIW5q7YTvM6Vbi2Y0O6triAsqEhwQ5NJF9K7kVERERE5LyXlp7BfxO38fmPWzhwOIM+UfWZdEd3LqgaEezQRApFyb2IiIiIiJyXnHMs37SHz3/czPfrdtHxolqMuKIl0Y1rElLGTl6ASAmi5F5ERERERM4rKanpfLVsK58nbKFsaBn6dmjIXX3aUCWibLBDEzltSu5FREREROScl5mVzeJ1u/g8YQsrtuzh0lZ1eGhANC3qVsVMrfRS+im5FxERERGRc9bWlDQ+/3ELc37axoVVI+jboQEPD+xA+bJKheTcovfclxAhISFER0fTtm1brrvuOvbt2wfA9u3bufHGG/PcpmfPnpz4Wr/TdfPNN9O+fXuee+65IinvTM2YMYOVK1fmTj/22GPMnj07iBGJiIiISGmRfjSTr5Zt5YG3F/LA2wtxwF+GduG52y6hT3QDJfZyTtJVXUKUL1+ehIQEAIYNG8akSZN49NFHqVu3LtOmTSvWff/yyy/88MMPrF+/vtDbZGZmEhpafJfPjBkziIuLo3Xr1gA88cQTxbYvERERETk3/LzzAP9asolvV+6gdf2qDOgcSZfmFxAWojZNOffpKi+BunbtyrZt2wDYuHEjbdu2BeDw4cMMGTKEVq1aMWDAAA4fPpy7zeuvv07z5s3p3LkzI0eO5N577wUgOTmZG264gU6dOtGpUyfmz5//q/1dddVVbNu2jejoaL777jsSEhK4+OKLad++PQMGDGDv3r2A11NgzJgxxMbG8vzzz+dbdlpaGrfddhvt2rWjffv2fPzxxwCMGjWK2NhY2rRpw/jx43P3/9BDD9G6dWvat2/PH//4RxYsWMCsWbMYO3Ys0dHRJCUlMXz48NybHJGRkYwfP56OHTvSrl07Vq9enXusvXv3pk2bNtxxxx00atSI3bt3F+m5EREREZGSJ9s5ps5P4uH3v6dW5XBe+d2lTLy5M91b1VFiL+cNtdyXMFlZWcyZM4fbb7/9V8tefvllIiIiWLVqFcuXL6djx46A13V/4sSJLF26lEqVKnHFFVcQFRUFwOjRo/n9739P9+7d2bx5M3369GHVqlXHlTtr1izi4uJyew60b9+eF198kR49evDYY48xYcIE/v73vwNw9OjR3EcBbrnlljzLnjhxIlWqVOGnn34CyL058NRTT1G9enWysrLo1asXy5cvp169ekyfPp3Vq1djZuzbt4+qVavSr18/4uLi8n0koWbNmixdupR//OMfPPvss7z22mtMmDCBK664gocffpjPP/+c119//UxPh4iIiIiUcPsPHeWZmQmkpWfw4u3dqV2lfLBDEgkKJfd5uaNv0Zf52ucFLj58+DDR0dFs27aNVq1a0bt371+t8+2333L//fcDXgLevn17ABYvXkyPHj2oXr06AIMGDWLt2rUAzJ49+7hn1w8cOEBaWhoVK1bMM479+/ezb98+evToAXiPCAwaNCh3+eDBg3O/51f27NmzmTJlSu78atWqAfDhhx/y6quvkpmZyY4dO1i5ciWtW7cmPDyc22+/nbi4OOLi4gqspxwDBw4EICYmhk8++QSAefPmMX36dAD69u2bu18REREROTf9tHkPT0//kcvb1GX45S0IVSu9nMeU3OflJIl4cch55v7QoUP06dOHSZMm5SbyZyI7O5tFixYRHh5eBFFChQoVTqvsDRs28Oyzz/LDDz9QrVo1hg8fTnp6OqGhoSxevJg5c+Ywbdo0XnrpJb7++uuTlleuXDnAG4gwMzPz9A9IREREREqdbOf4cH4SMxZv5A/Xtadzs9rBDkkk6HRrq4SJiIjghRde4K9//euvktbLLruMDz74AIDExESWL18OQKdOnfjmm2/Yu3cvmZmZuc+4g/c8/Ysvvpg7ndP1Pj9VqlShWrVqfPfddwC8++67ua34J8qv7N69ezNp0qTc+Xv37uXAgQNUqFCBKlWqsHPnTj777DPAez5///79XHPNNTz33HMsW7YMgEqVKpGamlpgrCfq1q0bH374IQBffvll7uMAIiIiInLu2HfwCOMm/8Di9bt44fZuSuzl3OUc7EuBdYkw/yuY8U6Bq6vlvgTq0KED7du3Z/LkyVx66aW580eNGsVtt91Gq1ataNWqFTExMQDUq1ePRx55hM6dO1O9enVatmxJlSpVAHjhhRe45557aN++PZmZmVx22WW88sorBe7/7bff5q677uLQoUNcdNFFvPnmm3mul1/Z48aN45577qFt27aEhIQwfvx4Bg4cSIcOHWjZsiUNGjSgW7duAKSmptK/f3/S09NxzvG3v/0NgCFDhjBy5EheeOGFQr8tYPz48dx88828++67dO3alQsvvJBKlSoValsRERERKfl+2pTC0zMS6NW2Hr/t2Vzd8KX0y8yElF2QvB2Sd8CuHd6/OZ9y4VCrjvepXbfAosw5d5aiLhliY2Pdie+GX7VqFa1atQpSREUj5zn6zMxMBgwYwIgRIxgwYECwwzqrjhw5QkhICKGhoSxcuJBRo0bl2VPhXDjfIiIiIueTbOeYMm89s37YxAP92tOpqVrrpRRJP+wn7tuPJe05Sfy+FKha/VgCX6su1M5J5utAeMRxRZlZvHMuNq/dqOX+HPH4448ze/Zs0tPTueqqq7j++uuDHdJZt3nzZm666Says7MpW7Ys//znP4MdkoiIiIicoX0Hj/CX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5Nzj6fMiwhzETL+fP3g7Qgyh/nNntfmfh8x47Ag5936O8+6nr+kI0TB1ERERERHxWe7h3gm0zHjuArZe6oSGziHe/1fPX/S1t5vSa7hEiHrbc85/TxN4fO61cyefe81cUIcxM2ows883MCP0+YPheWHQYLEeN9brwetx43FP4XFP4p6axD05ydTkBNbrISoynKiICKKiIoiLjCAjPpaY6Chio6OIiYkiJiqKkJAQQgyEhBhCjK/HOMSYwHPfPbPbAsf5zjPG4Jh1zrnjHcYEvpdZ39d02wXf67nv0TD7+z733V34fYuIiIiIiKwkyz3cz4kx5lHgUYC8vDz+/QvvC3JF88Nay8jISGDv9umV5APP+3zPQ0JCzu3lnji9r3vqrP3do6KiFH5FRERERESWqeUe7luB3BnPc/xts1hrHwceB6iurr7EOPulw+PxzArq04/Pb4uIiAjMb4+L8wX36b3cp9u0QJ2IiIiIiMjKttzD/T6g1BhTiC/Uvx94MLglXd7ExMTsHvaLhPexsTFiY2Nnhfa4uDiys7NnBXdtCSciIiIiIiLLOhlaa93GmM8Az+DbCu871tpjQayHsbGxWaH9Yr3tHo8nENCnQ3paWhpFRUWBtpiYmKCuKi8iIiIiIiLLx7IO9wDW2l8Cv1yE6zA6OhoI6dNbwE0H94GBAYaGhggNDZ0V2uPj48nNzZ31PDIyUvPbRUREREREZN4s+3A/H2YuTDcd2i8W3MPDwwN7t19sfnt8fDzh4eHB/jgiIiIiIiKyyqy6cD8yMsKzzz47K7gPDw8TGRl5QY97RkbGrLawsLBgly8iIiIiIiJygVUX7t1uNzExMWRlZWlhOhEREREREVkRVl2iTUhIYPv27cEuQ0RERERERGTeaDl2ERERERERkWVO4V5ERERERERkmVO4FxEREREREVnmFO5FREREREREljmFexEREREREZFlTuFeREREREREZJlTuBcRERERERFZ5hTuRURERERERJY5hXsRERERERGRZU7hXkRERERERGSZU7gXERERERERWeYU7kVERERERESWOYV7ERERERERkWXOWGuDXcOiMsYMAacW4VIJwMAKus5iXmulXWcxr7XSrrOY11pp11nMa6206yzmtRbzM6UC3YtwnZX43a20z6TvbulfZzGvtdKus5jXWmnXWcxrrbTrLOa1yq21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\n",
      "text/plain": [
       "<Figure size 1224x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Plotting data\n",
    "ridge_res_train['predictions'].plot(figsize=(17,6), title= 'Baseline: Confirmed Cases Forecast by Ridge regression (China total)', fontsize=10,\n",
    "                                        label= 'Fitted value',linewidth=1, color = 'grey')\n",
    "ridge_res_train['y_train'].plot(figsize=(17,6),label= 'Observation',linewidth=1, color = 'steelblue')\n",
    "ridge_res_test['y_test'].plot(figsize=(17,6), label= 'Observation', linewidth=1, color = 'steelblue')\n",
    "\n",
    "ridge_res_test['predictions'].plot(figsize=(17,6), label= 'Ridge forecasting', color = 'tomato',linewidth=1)\n",
    "plt.ylabel('Confirmed cases')\n",
    "plt.xlabel('')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
